import { ChatOllama } from "@langchain/ollama";
import { PromptTemplate } from "@langchain/core/prompts";
import { StringOutputParser } from "@langchain/core/output_parsers";

// 创建模块：提示词模块、模型模块、解析器模块

// 1. 创建提示词
const pt = PromptTemplate.fromTemplate("请严格使用中文解释:{question}");

// 2. 创建模型
const model = new ChatOllama({
  model: "llama3",
  temperature: 0.7,
});

// 3. 创建一个解析器
const parser = new StringOutputParser();

// 4. 将上面的 3 个模块连接起来：pipe
// 相当于创建了一个链条
const chain = pt.pipe(model).pipe(parser);

// 5. 使用 chain 这个链条
const res = await chain.stream({
  question: "什么是闭包",
});

for await (const chunk of res) {
  process.stdout.write(chunk);
}
